package pr1.gui;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.border.EmptyBorder;

import pr1.bdd.Serie;

public class Admin extends JFrame {

	private JPanel contentPane;
	private JTextField busca;
	private GUIController gui;
	private JList list;
	private DefaultListModel listModel;

	/**
	 * Create the frame.
	 */
	public Admin(GUIController gui) {
		super("Administración");
		this.gui = gui;
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 554, 388);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
		tabbedPane.setBounds(10, 11, 518, 328);
		contentPane.add(tabbedPane);

		JPanel panel = new JPanel();
		tabbedPane.addTab("Series", null, panel, null);
		panel.setLayout(null);

		busca = new JTextField();
		busca.setColumns(10);
		busca.setBounds(145, 12, 186, 20);
		panel.add(busca);

		JButton button = new JButton("Buscar");
		button.addActionListener(new BuscarListener());
		button.setFont(new Font("Tahoma", Font.BOLD, 11));
		button.setBounds(359, 11, 89, 23);
		panel.add(button);

		JLabel label = new JLabel("Buscar serie:");
		label.setFont(new Font("Tahoma", Font.BOLD, 11));
		label.setBounds(63, 15, 72, 14);
		panel.add(label);

		JButton button_1 = new JButton("Ver información");
		button_1.setBounds(104, 266, 163, 23);
		panel.add(button_1);
		button_1.addActionListener(new InformacionListener());

		JButton btnNuevaSerie = new JButton("Nueva serie");
		btnNuevaSerie.setBounds(277, 266, 129, 23);
		btnNuevaSerie.addActionListener(new NuevaSerieListener());
		panel.add(btnNuevaSerie);

		JPanel listPanel = new JPanel();
		listPanel.setBounds(33, 39, 431, 214);
		panel.add(listPanel);
		listPanel.setLayout(null);

		listModel = new DefaultListModel();
		list = new JList(listModel);
		list.setVisibleRowCount(5);
		list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		list.setSelectedIndex(0);

		JScrollPane listScrollPane = new JScrollPane(this.list);
		listScrollPane.setBounds(0, 0, 431, 214);
		listPanel.add(listScrollPane);

		JPanel panel_2 = new JPanel();
		tabbedPane.addTab("Personajes", null, panel_2, null);

		setVisible(true);
		this.setLocationRelativeTo(null);
	}

	private class NuevaSerieListener implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent arg0) {
			new CrearSerie(gui);

		}

	}



	private void cargarBusqueda() {
		String busqueda = this.busca.getText();
		busqueda = busqueda.trim().replaceAll(" +", " ");
		if ((busqueda != null) && (busqueda != "")) {
			ArrayList<Serie> series = gui.cargarBusqueda(busqueda);
			int i = 0;
			String resultado;
			String fin;
			while (i < series.size()) {
				if (series.get(i).getAno_final() == 0){
					fin = "?";
				} else fin = Integer.toString(series.get(i).getAno_final());
				resultado = series.get(i).getNombreSerie() + "  (" +series.get(i).getAno_estreno() + " - " + fin + ")";
				listModel.addElement(resultado);
				i++;
			}
		}

	}

	private class BuscarListener implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent e) {
			listModel.removeAllElements();
			cargarBusqueda();
		}

	}
	
	private class InformacionListener implements ActionListener {
		@Override
		public void actionPerformed(ActionEvent e) {
			

			new VerInformacionAdmin(serieSeleccionada(),gui);		

		}

	}
	
	public void noCreado(){
		JOptionPane.showMessageDialog(new JFrame(),
				"La serie ya existe",
				"Error", JOptionPane.ERROR_MESSAGE, null);
	}
	
	private Serie serieSeleccionada(){
		String line = listModel.getElementAt(list.getSelectedIndex()).toString();
		String[] nombre = line.split("\\(");
		String s = nombre[0].replaceAll("\\s+$", "");//quita espacios al principio y al final de la cadena
		return gui.busquedaSerieIndividual(s); //Se busca la serie con ese título.
		
	}
}
